var express = require('express');
const cors=require('cors');
/*引入token的模块*/
const jwt=require("./jwt.js");
// 创建WEB服务器
var app = express();
//------ 引入flower模块的路由器-----
var productsRouter=require('./router/products');
// ------ 引入user注册模块的路由器-----
var userRouter=require('./router/user');


// 监听端口
app.listen(3000);

app.use(cors({
  origin:"*",
  // origin:["http://127.0.0.1:8080","http://localhost:8080"]

}));
// 托管静态资源
app.use(express.static("public"));


// 挂载路由器
// app.use('/', indexRouter);
// app.use('/user', userRouter);

// 请求头
// app.all('*', function (req, res, next) {
//   res.header("Access-Control-Allow-Origin", "*");
//   res.header("Access-Control-Allow-Headers", "X-Requested-With");
//   res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
//   res.header("X-Powered-By", ' 3.2.1')
//   res.header("Content-Type", "application/json;charset=utf-8");
//   next();
// })



// 将post传递的参数转为中间件,（可以拦截所有路由器，并转为对象）
app.use((req, res, next)=>{ 
  if (req.url.startsWith("/user/cart")) {//是/user,但是不是用户登录开头的/user/signin
    let token = req.headers.token;
    let result = jwt.verifyToken(token);
    // 如果考验通过就next，否则就返回登陆信息不正确
    // console.log(111);
    if(result===undefined){
      res.send({status:403, msg:"未提供证书"})
      // console.log(222);
    }else if (result.name == 'TokenExpiredError') {//过期的token 
      res.send({status: 403, msg: '登录超时，请重新登录'});
    } else if (result.name=="JsonWebTokenError"){//证书错误
      res.send({status: 403, msg: '证书出错'})
    } else{
      req.user=result;
      next(); 
      // console.log(555);
    }
  } else {
    next();
    // 用户对象
    // console.log(333);
  }
});


app.use(express.urlencoded({
  extended:true
}));
//------------遵循RESTful接口--------
app.use('/product',productsRouter)
app.use('/user',userRouter)

// error handler
// ----错误处理中间键，接收错误----
// app.use(function(err, req, res, next) {
//   // set locals, only providing error in development
//   res.locals.message = err.message;
//   res.locals.error = req.app.get('env') === 'development' ? err : {};
  
//   // render the error page
//   res.status(err.status || 500);
//   // res.render('error');
//   res.json({ error: err })
// });

